/* store模块化：将不同组件使用的store分成不同的模块进行管理 */

// 求和相关的配置
export default {
    // namespaced配置项：使用了Vuex模块化编码后，为了让每个store模块都有自己的标识名称（方便在要使用的组件上直接写对象名引用）
    // 该配置项设置为true后，组件内可以以："...mapState('模块对象名' ,['属性名','属性名']);" 的方式直接在模板中写属性名
    namespaced:true, // 开启命名空间
    actions:{
        // 为奇数再加
        incrementOdd(context,value){
            if(context.state.sum %2 !== 0) context.state.sum += value;
        },

        // 等一等再加
        incrementWait(context,value){
            setTimeout(()=>{
                // 通过组件调用dispatch时，actions接收到的context来执行commit()，通知mutations执行'加'的操作。
                context.commit('INCREMENT' ,value); // 传递两个参数：操作名（走到这一步，操作名用'英文大写'更好区分是走到了Mutations）、数据
            } ,500)
        },
    },
    mutations:{
        // 加
        INCREMENT(state,value){
            // console.log('mutations中的INCREMENT被调用了',state,value);

            state.sum += value;
        },

        // 减
        DECREMENT(state,value){
            state.sum -= value;
        },
    },
    getters:{
        // 对求和的数据进行加工：求和总数*10倍
        bigSum(state){
            return state.sum * 10
        }
    },
    state:{
        sum:0,  // 当前的和,
        school:'广西科师', // 学校名称
        subject:'Vue', // 课程名称
    }
}